/*
 * Copyright (C) 2011, EADS France
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 */
package xowl.gmi.view;

/**
 *
 * @author Laurent WOUTERS
 */
public class ToolboxElementSelectable extends ToolboxElement {
    public static interface Actions {
        void select(ToolboxElementSelectable selectable);
    }
    
    private Actions actions;
    private java.awt.Color connectingColor;
    private boolean isConnecting;
    
    public ToolboxElementSelectable(Actions acts, String description, ViewStyle style) {
        super(description, style);
        this.actions = acts;
        this.connectingColor = style.toolboxSelectedColor;
        
        java.awt.event.MouseListener ml = new java.awt.event.MouseAdapter() {
            @Override public void mouseReleased(java.awt.event.MouseEvent e) {
                ToolboxElementSelectable.this.actions.select(ToolboxElementSelectable.this);
            }
        };
        this.addMouseListener(ml);
        label.addMouseListener(ml);
    }
    
    public void toggleConnecting() {
        isConnecting = !isConnecting;
        this.repaint();
    }
    
    protected boolean mustPaint() { return (isHovered || isConnecting); }
    protected java.awt.Color getPaintColor() {
        if (isConnecting) return connectingColor;
        if (isHovered) return hoverColor;
        else return null;
    }
}
